package com.wgy.Day28异常.自定义异常类;

import java.util.Scanner;

/*
自定义异常类练习:要求模拟注册操作,如果用户名已存在,则抛出异常并提示:亲,该用户名已经被注册
分析: 1.使用数字保存已经注册的用户名(数据库)
     2.使用Scanner获取用户输入的注册的用户名
     3.定义一个方法,对用户输入的中注册的用户名进行判断
       遍历存储已经注册过用户名的数组,获取每一个用户名
       使用获取到的用户名和用户输入的用户名进行比较
        true:用户名已经存在,抛出RegisterException异常,告知用户: "亲,该用户名已经被注册"
        false:继续遍历比较
        如果循环结束了,还没有找到重复的用户名,提示用户: "恭喜您,注册成功!"
*/
public class Demo01RegisterException extends Exception {
    //1.使用数字保存已经注册的用户名(数据库)
    static String[] usernames = {"张三", "李四", "王五"};

    public static void main(String[] args) throws RegisterException {
        //2.使用Scanner获取用户输入的注册的用户名
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入你要注册的用户名:");
        String username = sc.next();

        //4.调用 checkUsername方法
        checkUsername01(username);

    }

    //3.定义一个方法1,对用户输入的中注册的用户名进行判断
    public static void checkUsername(String username) throws RegisterException {
        //遍历存储已经注册用户名的数组,获取每一个用户名
        for (String name : usernames) {
            //比较用户名和用户输入的用户名
            if (username.equals(name)) {
                //true:用户名已经存在,抛出RegisterException异常,告知用户: "亲,该用户名已经被注册"
                throw new RegisterException("亲,该用户名已经被注册");
            }
        }
        //如果循环结束了,还没有找到重复的用户名,提示用户: "恭喜您,注册成功!"
        System.out.println("恭喜您,注册成功!");
    }

    //3.定义一个方法2,对用户输入的中注册的用户名进行判断
    public static void checkUsername01(String username) {
        //遍历存储已经注册用户名的数组,获取每一个用户名
        for (String name : usernames) {
            //比较用户名和用户输入的用户名
            if (name.equals(username)) {
                //true:用户名已经存在,抛出RegisterException异常,告知用户: "亲,该用户名已经被注册"
                try {
                    throw new RegisterException("亲,该用户名已经被注册");
                } catch (RegisterException e) {
                    e.printStackTrace();

                    return; //结束方法 catch之后的代码都不会执行
                }
            }
        }
        //如果循环结束了,还没有找到重复的用户名,提示用户: "恭喜您,注册成功!"
        System.out.println("恭喜您,注册成功!");
    }

}
